#pragma once




#ifndef __FACECORECALLER__
#define __FACECORECALLER__


#ifdef UNMANAGEDDLL_EXPORTS
#define UNMANAGEDDLL_API __declspec(dllexport)
#else
#define UNMANAGEDDLL_API __declspec(dllimport)
#endif

#define POINT_SIZE 51


typedef struct {
	int left;
	int top;
	int right;
	int bottom;
} FaceFeatureRectangle;

typedef struct
{
	int x;
	int y;
} FaceFeaturePoint;

typedef struct {
	float roll;
	float yaw;
	float pitch;
	FaceFeaturePoint points[POINT_SIZE];

} FacePointsModel;

#ifdef __cplusplus
extern "C" {
#endif
	extern UNMANAGEDDLL_API long CreateFacePointsEngine(const char*);

	extern UNMANAGEDDLL_API float CalculateFacePoints(long engine, unsigned char* imgBgr24, int width,
		int height, int widthstep, FaceFeatureRectangle &faceRect, FacePointsModel* pointModel);

	extern UNMANAGEDDLL_API bool CalculateHeadPose(long engine, unsigned char* imgBgr24, int width,
		int height, int widthstep, FacePointsModel* pointModel);

	extern UNMANAGEDDLL_API void Destory(long engine);

#ifdef __cplusplus
}
#endif

#endif